package com.example.permissionsystem1_1.businessFunction.dao.repository;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.permissionsystem1_1.businessFunction.dao.entity.po.DepartmentInfoPo;
import com.example.permissionsystem1_1.businessFunction.dao.entity.po.RoleInfoPo;
import com.example.permissionsystem1_1.businessFunction.dao.entity.po.UserInfoPo;
import com.example.permissionsystem1_1.common.businessFunction.BaseDao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface UserInfoDao extends BaseDao<UserInfoPo> {
    /**
     * 新增一条记录
     * @param po
     * @return
     */
    int insert(UserInfoPo po);
    /**
     * 批量新增多条记录
     * @param pos
     * @return
     */
    int insertBatch(@Param("pos")List<UserInfoPo> pos);
    /**
     * 根据id删除一条记录
     * @param id
     * @return
     */
    int deleteById(Long id);
    /**
     * 根据给定的字段值删除符合条件的多条记录
     * @param po
     * @return
     */
    int deletes(@Param("po")UserInfoPo po);
    /**
     * 根据id集合删除多条记录
     * @param ids
     * @return
     */
    int deleteBatchByIds(@Param("ids")List<Long> ids);
    /**
     * 根据id修改一条记录
     * @param po
     * @return
     */
    int updateById(@Param("po")UserInfoPo po);

    /**
     * 根据指定的byTestPo中的属性为选择条件,按照setTestPo中的属性进行修改符合条件的多条记录
     * @param byPo
     * @param setPo
     * @return
     */
    int updates(@Param("byPo")UserInfoPo byPo,@Param("setPo")UserInfoPo setPo);

    /**
     * 根据指定多个ids,来批量修改多条记录
     * @param po
     * @return
     */
    int updateBatchByIds(@Param("po")UserInfoPo po);

    /**
     * 根据指定id查询一条记录
     * @param id
     * @return
     */
    UserInfoPo selectById(Long id);

    /**
     * 根据指定的条件查询符合条件的多条记录
     * @param po
     * @return
     */
    List<UserInfoPo> selects(@Param("po")UserInfoPo po);

    /**
     * 根据多个id查询多条记录
     * @param ids
     * @return
     */
    List<UserInfoPo> selectBatchByIds(@Param("ids")List<Long> ids);

    /**
     * 分页查询多条记录
     * @param page
     * @return
     */
    IPage<UserInfoPo> selectPage(Page<?> page, @Param("po")UserInfoPo po);


}
